package com.hspedu.throws_;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author sp
 * @version 0.1
 */
public class ThrowsDetail {
    public static void main(String[] args) throws ArithmeticException {
        f2();

    }

    public static void f2() throws ArithmeticException{
        //1.对于编译异常，程序中必须处理，比如try-catch 或 throws
        //2.对于运行时异常，程序中如果没有处理，默认就是throws的方式处理，一级一级的往上传，一直到JVM
        int n1 = 10;
        int n2 = 0;
        double res = n1/n2;
    }



    public static void f1() {
        //调用f3() 报错，调用抛出异常的方法要try-catch-finally处理异常或者继续抛出异常
        //f3();
    }

    public static void f3() throws FileNotFoundException {
        FileInputStream fileInputStream = new FileInputStream("D://aa.txt");
    }


    public static void f4(){
        //调用f5()是可以的，运行时异常不要求显示粗粒，因为其有默认处理机制
        f5();
    }

    public static void f5() throws ArithmeticException{

    }




}


class Father{
    public void method() throws RuntimeException{

    }
}
class Son extends Father{

    //子类重写父类方法时，所抛出的异常类型要么和父类抛出的异常保持一致，要么为父类抛出的异常类型的子类型
    @Override
    public void method() throws RuntimeException {//这里的子类不能抛出Exception，只能<=父类异常类型

    }
}